package com.gwnet.shop.service.impl;

import com.gwnet.common.core.utils.DateUtils;
import com.gwnet.shop.domain.GoodsSpec;
import com.gwnet.shop.mapper.GoodsSpecMapper;
import com.gwnet.shop.service.IGoodsSpecService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 商品规格名称Service业务层处理
 *
 * @author ruoyi
 * @date 2024-07-19
 */
@Service
public class GoodsSpecServiceImpl implements IGoodsSpecService {

    @Resource
    private GoodsSpecMapper goodsSpecMapper;

    /**
     * 查询商品规格名称
     *
     * @param id 商品规格名称主键
     * @return 商品规格名称
     */
    @Override
    public GoodsSpec selectGoodsSpecById(Long id) {
        return goodsSpecMapper.selectGoodsSpecById(id);
    }

    /**
     * 查询商品规格名称列表
     *
     * @param goodsSpec 商品规格名称
     * @return 商品规格名称
     */
    @Override
    public List<GoodsSpec> selectGoodsSpecList(GoodsSpec goodsSpec) {
        return goodsSpecMapper.selectGoodsSpecList(goodsSpec);
    }

    /**
     * 新增商品规格名称
     *
     * @param goodsSpec 商品规格名称
     * @return 结果
     */
    @Override
    public int insertGoodsSpec(GoodsSpec goodsSpec) {
        //查询每种商品不能超过两种规格
        int count = goodsSpecMapper.selectCountOfGoodsSpec(goodsSpec.getGoodsId());
        if(count == 2){
            throw new RuntimeException("添加失败,每种商品最多添加两种规格!");
        }
        goodsSpec.setCreateTime(DateUtils.getNowDate());
        return goodsSpecMapper.insertGoodsSpec(goodsSpec);
    }

    /*@Override
    public int insertGoodsSpec(List<GoodsSpec> list, Long goodsId) {
        int count = 0;
        for (GoodsSpec goodsSpec : list) {
            goodsSpec.setGoodsId(goodsId);
            this.insertGoodsSpecOne(goodsSpec);
            count++;

            List<GoodsSpec> children = goodsSpec.getChildren();
            for (GoodsSpec spec : children) {
                spec.setGoodsId(goodsId);
                spec.setParentId(goodsSpec.getId());
                this.insertGoodsSpecOne(spec);
                count++;
            }
        }
        return count;
    }*/


    /**
     * 修改商品规格名称
     *
     * @param goodsSpec 商品规格名称
     * @return 结果
     */
    @Override
    public int updateGoodsSpec(GoodsSpec goodsSpec) {
        goodsSpec.setUpdateTime(DateUtils.getNowDate());
        return goodsSpecMapper.updateGoodsSpec(goodsSpec);
    }

    /**
     * 批量删除商品规格名称
     *
     * @param ids 需要删除的商品规格名称主键
     * @return 结果
     */
    @Override
    public int deleteGoodsSpecByIds(Long[] ids) {
        return goodsSpecMapper.deleteGoodsSpecByIds(ids);
    }

    /**
     * 删除商品规格名称信息
     *
     * @param id 商品规格名称主键
     * @return 结果
     */
    @Override
    public int deleteGoodsSpecById(Long id) {
        return goodsSpecMapper.deleteGoodsSpecById(id);
    }
}
